/// @tags:
#include <cctype>
#include <cstdio>
#include <functional>
#include <iostream>
#include <vector>

using std::cin, std::cout;

namespace BlueQuantum {

constexpr int maxn = 100;

template <typename T>
inline T read() {
  int x = 0;
  bool f = false;
  int ch = getchar();
  while (!isdigit(ch)) {
    if (ch == '-') f = true;
    ch = getchar();
  }
  while (isdigit(ch)) x = x * 10 + (ch ^ '0'), ch = getchar();
  if (f) x = -x;
  return x;
}

int main() {
  int ans = 0;
  std::vector amount = {read<int>(), read<int>(), read<int>()};
  std::sort(amount.begin(), amount.end());
  while (amount[2] != 0) {
    if (amount[1] != 0)
      amount[1]--, amount[2]--;
    else
      amount[2]--;
    ans++;
    std::sort(amount.begin(), amount.end());
  }
  return ans;
}

}  // namespace BlueQuantum

int main() {
#ifndef ONLINE_JUDGE
#ifdef LOCAL
  freopen("/tmp/CodeTmp/testdata.in", "r", stdin);
  freopen("/tmp/CodeTmp/testdata.out", "w", stdout);
#else
  freopen("2335.in", "r", stdin);
  freopen("2335.out", "w", stdout);
#endif
#endif

  std::ios::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL);
  return BlueQuantum::main();
}
